/*
  学习目标：使用dispatch修改state，完成一个+1和-1的练习
   
*/

import { createStore } from 'redux';

const store = createStore(function (state = { count: 0, msg: '123', list: [] }, action) {
  console.warn('action  ----->  ', action);
  // 2. 在reducer函数中，计算新的值，并返回新值
  // 💥reudcer函数负责计算，类似vuex中mutations
  // 💥reudcer函数通过第二个参数，拿到action对象
  // 💥reducer要遵循不可变数据，通过新值覆盖旧值
  if (action.type === 'add') {
    // ❌state.count++;
    // ❌state.list.push();
    return {
      ...state,
      count: state.count + 1,
    };
  }

  if (action.type === 'des') {
    return {
      ...state,
      count: state.count - 1,
    };
  }
  return state;
});

console.log('store.getState().count  ----->  ', store.getState().count); // 0

// 1. 使用dispatch发起一个修改的动作
// 💥 Redux中修改state，必须通过dispatch
// 💥 dispatch必须接收一个action， action是一个具有type属性的对象
store.dispatch({ type: 'add' });

console.log('store.getState().count  ----->  ', store.getState().count); // 1

store.dispatch({ type: 'des' });

console.log('store.getState().count  ----->  ', store.getState().count); // ???
